leaderboardApp.controller("proyeccionesCtrl", function($scope, $http, $timeout, $location, notifier, httpPost) {
	$scope.loading = false;
	$scope.message = {title: "", text: "", type: "", visible: false};
	$scope.modalMessage = {title: "", text: "", type: "", visible: false};
	
	$scope.proyeccionesSucursales = [];
	$scope.proyeccionesGeneral = [];
	
	$scope.detalleProyeccionSucursal = {};
	$scope.detalleProyeccionesFarmacias = [];
	
	$scope.mesesProyecciones = [];
	$scope.mesSeleccionado = {};
	
	$scope.proyeccionesAdministrar = [];
	$scope.isAdminPage = false;
	$scope.isVistaDetalle = false;
	$scope.tipoVistaDetalle = "";
	
	$scope.supervisores = [];
	$scope.supervisor = {};
	$scope.sortAsc = true;
	$scope.sortColumn = "";
	
	$scope.getProyecciones = function() {
		$scope.loading = true;
		var params = {};
		if($scope.supervisor != null) {
			if($scope.supervisor.id > 0) {
				params["supervisorId"] = $scope.supervisor.id;
			}
		}
		params["anio"] = $scope.mesSeleccionado.year;
		params["mes"] = $scope.mesSeleccionado.month;
		params["sortAsc"] = $scope.sortAsc;
		params["sortColumn"] = $scope.sortColumn;
		
		httpPost.send($scope.message, "/Leaderboard/ProyeccionesServlet/getProyeccionesSucursales", params, function(data) {
			if(data.code === 0) {
				$scope.proyeccionesSucursales = data.proyecciones;
			}
			$scope.loading = false;
		});
	};
	
	$scope.getProyeccionesAdministrar = function() {
		$scope.loading = true;
		httpPost.send($scope.message, "/Leaderboard/ProyeccionesServlet/getProyeccionesAdministrar", {"anio": $scope.mesSeleccionado.year, "mes": $scope.mesSeleccionado.month}, function(data) {
			if(data.code === 0) {
				$scope.proyeccionesAdministrar = data.proyeccionesAdministrar;
			}
			$scope.loading = false;
		});
	};
	
	$scope.getProyeccionesGenerales = function() {
		$scope.loading = true;
		httpPost.send($scope.message, "/Leaderboard/ProyeccionesServlet/getProyeccionesGenerales", {}, function(data) {
			if(data.code === 0) {
				$scope.proyeccionesGenerales = data.proyeccionesGenerales;
			}
			$scope.loading = false;
		});
	};
	
	$scope.getMesesProyecciones = function() {
		$scope.loading = true;
		httpPost.send($scope.message, "/Leaderboard/ProyeccionesServlet/getMesesProyecciones", {}, function(data) {
			if(data.code === 0) {
				$scope.mesesProyecciones= data.meses;
				if($scope.mesesProyecciones.length > 0) {
					$scope.mesSeleccionado = $scope.mesesProyecciones[$scope.mesesProyecciones.length-1];
					if($scope.isAdminPage) {
						$scope.getProyeccionesAdministrar();
					} else {
						$scope.getProyecciones();
					}
				}
			}
			$scope.loading = false;
		});
	};
	
	$scope.getSupervisores = function() {
		$scope.loading = true;
		httpPost.send($scope.message, "/Leaderboard/AdminServlet/getSupervisores", {"showAllSelector": "YES"}, function(data) {
			if(data.code === 0) {
				$scope.supervisores = data.supervisores;
				if($scope.supervisores.length > 0) {
					$scope.supervisor = $scope.supervisores[$scope.supervisores.length - 1]; 
				}
				if($("#cmbSupervisores").select2 != null) {
					$("#cmbSupervisores").select2();
					$timeout(function() { $("#cmbSupervisores").trigger("change"); }, 0, false);
				}
			}
		});
		$scope.loading = false;
	};
	
	$scope.guardarMetasProyecciones = function() {
		$scope.loading = true;
		var branchIdMetaDias = $.map($scope.proyeccionesAdministrar, function(item) { return item.branchId + "-" + item.meta + "-" + item.diasApertura; });
		
		httpPost.send($scope.message, "/Leaderboard/ProyeccionesServlet/updateMetasProyeccionFarmacia", {"branchId-meta-dias": branchIdMetaDias.toString()}, function(data) {
			if(data.code === 0) {
				notifier.notifySuccess($scope.message, "OK", data.reason);
				$scope.loading = false;
			}
		});
	};
	
	$scope.detalleProyeccionesSucursal = function(proyeccion) {
		$scope.loading = true;
		$scope.isVistaDetalle = true;
		httpPost.send($scope.message, "/Leaderboard/ProyeccionesServlet/getDetalleProyeccionSucursal", {"idProyeccion": proyeccion.id}, function(data) {
			if(data.code === 0) {
				$scope.detalleProyeccionSucursal = data.detalleProyeccion;
			}
			$scope.loading = false;
		});
	};
	
	$scope.detalleProyeccionGeneralVenta = function() {
		$scope.isVistaDetalle = true;
		$scope.tipoVistaDetalle = "V";
		httpPost.send($scope.message, "/Leaderboard/ProyeccionesServlet/getDetalleProyeccionesFarmacias", {}, function(data) {
			if(data.code === 0) {
				$scope.detalleProyeccionesFarmacias = data.detalleProyeccionesFarmacias;
			}
			$scope.loading = false;
		});
	};
	
	$scope.detalleProyeccionGeneralCumplimiento = function() {
		$scope.isVistaDetalle = true;
		$scope.tipoVistaDetalle = "C";
		httpPost.send($scope.message, "/Leaderboard/ProyeccionesServlet/getDetalleProyeccionesFarmacias", {}, function(data) {
			if(data.code === 0) {
				$scope.detalleProyeccionesFarmacias = data.detalleProyeccionesFarmacias;
			}
			$scope.loading = false;
		});
	};
	
	$scope.setCurrentMes = function(mes) {
		$scope.mesSeleccionado = mes;
	};
	
	$scope.classForMes = function(mes) {
		if(mes.year === $scope.mesSeleccionado.year && mes.month === $scope.mesSeleccionado.month) {
			return "active";
		} else {
			return "";
		}
	};
	
	$scope.setAdminPage = function(isAdmin) {
		$scope.isAdminPage = isAdmin;
	};
	
	$scope.regresar = function() {
		$scope.isVistaDetalle = false;
	};
	
	$scope.classForProyeccion = function(proyeccionValue) {
		if(proyeccionValue >= 0 && proyeccionValue <= 89.99) {
			return "danger";
		} else if (proyeccionValue >= 09 && proyeccionValue <= 99.99) {
			return "warning";
		} else if (proyeccionValue >= 100) {
			return "success";
		}
	};
	
	$scope.toggleSort = function(columnName) {
		if($scope.sortColumn == columnName) {
			$scope.sortAsc = !$scope.sortAsc;
		} else {
			$scope.sortColumn = columnName;
			$scope.sortAsc = true;
		}
		$scope.getProyecciones();
	};
	
	$scope.classActiveIf = function(columnName) {
		if($scope.sortColumn == columnName) {
			return "active";
		}
		return "";
	};
	
	$scope.classForSortType = function() {
		if($scope.sortAsc) {
			return "icon-chevron-up glyphicon glyphicon-chevron-up";
		} else {
			return "icon-chevron-down glyphicon glyphicon-chevron-down";
		}
	};
	
	$scope.isSortActive = function(columnName) {
		if($scope.sortColumn == columnName) {
			return true;
		}
		return false;
	};
	
	/************************************** Funciones de Utiler�a **************************************/
	
	$scope.hideMessage = function() {
		notifier.hideNotif($scope.message);
	};
	
	/************************************** ##################### **************************************/
});